Most modern computer systems, such as those based on the Intel.RTM. Pentium.RTM. processor, are equipped with a special processing mode known as system management mode. In system management mode, the computer processor executes software instructions accessed from a completely separate address space than the normal address space in which the system memory is mapped. That is, the physical system memory is mapped according to a normal address mapping when the processor is not in system management mode and is mapped according to a system management mode address mapping when the processor is in system management mode.
System management mode is commonly used when implementing control features such as power management. A common implementation of power management is to turn off power to a device when it has been idle for a programmed amount of time. When the device is accessed again, power is reapplied and the input/output (I/O) instruction that caused the access is executed.
A typical prior art computer system that implements system management mode includes a processor coupled by a processor bus to a North bridge that includes a memory controller coupled to a system memory. The North bridge typically is coupled by a primary computer bus to a South bridge which is coupled by a secondary computer bus to various computer devices, such as a keyboard. The South bridge typically is coupled directly to a System Management Interrupt (SMI) pin of the processor to enable the South bridge to submit an SMI request by driving the SMI pin.
Suppose the keyboard is inactive for an extended amount of time. Many current South bridges will detect that the keyboard is not being used and will submit an SMI request to the processor. In response, the processor saves state information stored in internal registers to a predetermined portion of system management memory and jumps to an entry point in system management memory where an SMI handler routine is located. The processor executes the SMI handler routine to service the power management request by saving the state of the inactive device to system management memory and powering-down the device. Upon completing its task as specified by the SMI handler routine, the processor retrieves and restores the saved processor state from system management memory, exits system management mode, and continues normal program execution. The processor exits system management mode and returns to normal mode in response to a return to system management mode (RSM) instruction at the end of the SMI handler routine.
A problem with prior art implementations of system management mode is that SMI requests can only be processed serially. After an SMI request is recognized, the SMI pin is masked by the processor until the SMI handler finishes processing the SMI request. If another SMI request is asserted while a current SMI request is being serviced, the second SMI request is latched and can only be serviced after the SMI handler completes servicing the first SMI request. If a third SMI request was attempted while the first SMI request was being serviced, the third SMI request would be lost. Such serial processing of SMI requests prevents prior art computer systems from implementing time-sensitive applications using system management mode.
An additional problem of prior art systems is that the SMM memory space is limited to 64 KB of memory. Given that some of the SMM memory space is needed to store the state of the CPU and devices of the computer, there is somewhat less than 64 KB for the SMI handler routine. As a result, the services that can be provided by prior art SMI handler routines are limited to those that are necessary and that can be provided by programming that fits within the limited SMM memory space.